home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / gnugo1_1.lha / gnugo / patterns.c < prev    next >
Text File  |  1989-03-07  |  7KB  |  380 lines

  1. /*
  2.                 GNU GO - the game of Go (Wei-Chi)
  3.                 Version 1.1   last revised 3-1-89
  4.            Copyright (C) Free Software Foundation, Inc.
  5.                       written by Man L. Li
  6.                       modified by Wayne Iba
  7.                     documented by Bob Webber
  8. */
  9. /*
  10. This program is free software; you can redistribute it and/or modify
  11. it under the terms of the GNU General Public License as published by
  12. the Free Software Foundation - version 1.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License in file COPYING for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program; if not, write to the Free Software
  21. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  
  23. Please report any bug/fix, modification, suggestion to
  24.  
  25. mail address:   Man L. Li
  26.                 Dept. of Computer Science
  27.                 University of Houston
  28.                 4800 Calhoun Road
  29.                 Houston, TX 77004
  30.  
  31. e-mail address: manli@cs.uh.edu         (Internet)
  32.                 coscgbn@uhvax1.bitnet   (BITNET)
  33.                 70070,404               (CompuServe)
  34. */
  35.  
  36. #define EMPTY 0
  37. #define PATNO 24
  38.  
  39. /* pattern x, y coor and attribute */
  40. /* for each pattern coordinate 0,0 must have my piece */
  41. /* att = 0 - empty, 1 - your piece, 2 - my piece, 3 - my next move */
  42. /* 4 - empty on edge, 5 - your piece on edge, 6 - my piece on edge */
  43. /*
  44.  struct patval {int x, y, att;};
  45. */
  46.  
  47. /* patn - patern */
  48. /* patlen - no. of pieces in pattern */
  49. /* trfno - no. of transformation to match pattern */
  50. /*       8 for normal pattern, 4 for symmetrical pattern */
  51. /* patwt - pattern value */
  52. /*
  53.  struct pattern {
  54.          struct patval patn[MAXPC];
  55.          int patlen, trfno, patwt;
  56.            };
  57. */
  58.  static struct pattern pat[PATNO] = {
  59. /*
  60.    pattern 0: 232   connect if invaded
  61.           010
  62. */
  63.    {{{0, 0, 2},
  64.      {0, 1, EMPTY},
  65.      {1, 0, 3},
  66.      {1, 1, 1},
  67.      {2, 0, 2},
  68.      {2, 1, EMPTY}}, 6, 4, 82},
  69. /*
  70.    pattern 1: 230   connect if invaded
  71.           012
  72. */
  73.    {{{0, 0, 2},
  74.      {0, 1, EMPTY},
  75.      {1, 0, 3},
  76.      {1, 1, 1},
  77.      {2, 0, EMPTY},
  78.      {2, 1, 2}}, 6, 8, 82},
  79. /*
  80.    pattern 2: 212   try to attack
  81.           030
  82. */
  83.    {{{0, 0, 2},
  84.      {0, 1, EMPTY},
  85.      {1, 0, 1},
  86.      {1, 1, 3},
  87.      {2, 0, 2},
  88.      {2, 1, EMPTY}}, 6, 4, 82},
  89. /*
  90.    pattern 3: 2302   connect if invaded
  91.           0100
  92. */
  93.    {{{0, 0, 2},
  94.      {0, 1, EMPTY},
  95.      {1, 0, 3},
  96.      {1, 1, 1},
  97.      {2, 0, EMPTY},
  98.      {2, 1, EMPTY},
  99.      {3, 0, 2},
  100.      {3, 1, EMPTY}},8, 8, 83},
  101. /*
  102.    pattern 4: 20302   connect if invaded
  103.           00100
  104. */
  105.    {{{0, 0, 2},
  106.      {0, 1, EMPTY},
  107.      {1, 0, EMPTY},
  108.      {1, 1, EMPTY},
  109.      {2, 0, 3},
  110.      {2, 1, 1},
  111.      {3, 0, EMPTY},
  112.      {3, 1, EMPTY},
  113.      {4, 0, 2},
  114.      {4, 1, EMPTY}}, 10, 4, 84},
  115. /*
  116.    pattern 5: 203   form eye to protect
  117.           021
  118. */
  119.    {{{0, 0, 2},
  120.      {0, 1, EMPTY},
  121.      {1, 0, EMPTY},
  122.      {1, 1, 2},
  123.      {2, 0, 3},
  124.      {2, 1, 1}}, 6, 8, 82},
  125. /*
  126.    pattern 6: 202    form eye to protect
  127.           031
  128. */
  129.    {{{0, 0, 2},
  130.      {0, 1, EMPTY},
  131.      {1, 0, EMPTY},
  132.      {1, 1, 3},
  133.      {2, 0, 2},
  134.      {2, 1, 1}}, 6, 8, 82},
  135. /*
  136.    pattern 7: 230   connect if invaded
  137.           102
  138. */
  139.    {{{0, 0, 2},
  140.      {0, 1, 1},
  141.      {1, 0, 3},
  142.      {1, 1, EMPTY},
  143.      {2, 0, EMPTY},
  144.      {2, 1, 2}}, 6, 8, 82},
  145. /*
  146.    pattern 8: 200000
  147.            00030  extend
  148.            00000
  149. */
  150.    {{{0, 0, 2},
  151.      {1, 0, EMPTY},
  152.      {2, 0, EMPTY},
  153.      {3, 0, EMPTY},
  154.      {4, 0, EMPTY},
  155.      {5, 0, EMPTY},
  156.      {1, 1, EMPTY},
  157.      {2, 1, EMPTY},
  158.      {3, 1, EMPTY},
  159.      {4, 1, 3},
  160.      {5, 1, EMPTY},
  161.      {1, 2, EMPTY},
  162.      {2, 2, EMPTY},
  163.      {3, 2, EMPTY},
  164.      {4, 2, EMPTY},
  165.      {5, 2, EMPTY}}, 16, 8, 80},
  166. /*
  167.    pattern 9:  2
  168.           000
  169.           000  extend
  170.           000
  171.           030
  172.           000
  173. */
  174.    {{{ 0, 0, 2},
  175.      {-1, 1, EMPTY},
  176.      { 0, 1, EMPTY},
  177.      { 1, 1, EMPTY},
  178.      {-1, 2, EMPTY},
  179.      { 0, 2, EMPTY},
  180.      { 1, 2, EMPTY},
  181.      {-1, 3, EMPTY},
  182.      { 0, 3, EMPTY},
  183.      { 1, 3, EMPTY},
  184.      {-1, 4, EMPTY},
  185.      { 0, 4, 3},
  186.      { 1, 4, EMPTY},
  187.      {-1, 5, EMPTY},
  188.      { 0, 5, EMPTY},
  189.      { 1, 5, EMPTY}}, 16, 4, 80},
  190. /*
  191.    pattern 10: 20000
  192.         0030  extend
  193.         0000
  194. */
  195.    {{{0, 0, 2},
  196.      {1, 0, EMPTY},
  197.      {2, 0, EMPTY},
  198.      {3, 0, EMPTY},
  199.      {4, 0, EMPTY},
  200.      {1, 1, EMPTY},
  201.      {2, 1, EMPTY},
  202.      {3, 1, 3},
  203.      {4, 1, EMPTY},
  204.      {1, 2, EMPTY},
  205.      {2, 2, EMPTY},
  206.      {3, 2, EMPTY},
  207.      {4, 2, EMPTY}}, 13, 8, 79},
  208. /*
  209.    pattern 11:    2
  210.            000
  211.            000  extend
  212.            030
  213.            000
  214. */
  215.    {{{ 0, 0, 2},
  216.      {-1, 1, EMPTY},
  217.      { 0, 1, EMPTY},
  218.      { 1, 1, EMPTY},
  219.      {-1, 2, EMPTY},
  220.      { 0, 2, EMPTY},
  221.      { 1, 2, EMPTY},
  222.      {-1, 3, EMPTY},
  223.      { 0, 3, 3},
  224.      { 1, 3, EMPTY},
  225.      {-1, 4, EMPTY},
  226.      { 0, 4, EMPTY},
  227.      { 1, 4, EMPTY}}, 13, 4, 79},
  228. /*
  229.    pattern 12: 2000
  230.         030  extend
  231.         000
  232. */
  233.    {{{0, 0, 2},
  234.      {1, 0, EMPTY},
  235.      {2, 0, EMPTY},
  236.      {3, 0, EMPTY},
  237.      {1, 1, EMPTY},
  238.      {2, 1, 3},
  239.      {3, 1, EMPTY},
  240.      {1, 2, EMPTY},
  241.      {2, 2, EMPTY},
  242.      {3, 2, EMPTY}}, 10, 8, 76},
  243. /*
  244.    pattern 13:    2
  245.            000  extend
  246.            030
  247.            000
  248. */
  249.    {{{ 0, 0, 2},
  250.      {-1, 1, EMPTY},
  251.      { 0, 1, EMPTY},
  252.      { 1, 1, EMPTY},
  253.      {-1, 2, EMPTY},
  254.      { 0, 2, 3},
  255.      { 1, 2, EMPTY},
  256.      {-1, 3, EMPTY},
  257.      { 0, 3, EMPTY},
  258.      { 1, 3, EMPTY}}, 10, 4, 76},
  259. /*
  260.    pattern 14: 643   form eye on the edge
  261.         20
  262. */
  263.    {{{0, 0, 6},
  264.      {1, 0, 4},
  265.      {1, 1, 2},
  266.      {2, 0, 3},
  267.      {2, 1, EMPTY}}, 5, 8, 80},
  268. /*
  269.    pattern 15: 646    solidify eye on the edge
  270.            231
  271. */
  272.    {{{0, 0, 6},
  273.      {1, 0, 4},
  274.      {1, 1, 2},
  275.      {2, 0, 6},
  276.      {2, 1, 3},
  277.      {3, 1, 1}}, 6, 8, 75},
  278. /*
  279.    pattern 16: 646    solidify eye on the edge
  280.         230
  281.          1
  282. */
  283.    {{{0, 0, 6},
  284.      {1, 0, 4},
  285.      {1, 1, 2},
  286.      {2, 0, 6},
  287.      {2, 1, 3},
  288.      {2, 2, 1},
  289.      {3, 1, EMPTY}}, 7, 8, 75},
  290. /*
  291.    pattern 17: 646    solidify eye on the edge
  292.         230
  293.          0
  294. */
  295.    {{{0, 0, 6},
  296.      {1, 0, 4},
  297.      {1, 1, 2},
  298.      {2, 0, 6},
  299.      {2, 1, 3},
  300.      {2, 2, EMPTY},
  301.      {3, 1, EMPTY}}, 7, 8, 75},
  302. /*
  303.    pattern 18:    2       form eye on center
  304.            202
  305.         3
  306. */
  307.    {{{0, 0, 2},
  308.     {-1, 1, 2},
  309.      {0, 1, EMPTY},
  310.      {1, 1, 2},
  311.      {0, 2, 3}}, 5, 4, 80},
  312. /*
  313.    pattern 19:    2       solidify eye on center
  314.            202
  315.         231
  316. */
  317.    {{{0, 0, 2},
  318.     {-1, 1, 2},
  319.      {0, 1, EMPTY},
  320.      {1, 1, 2},
  321.      {0, 2, 2},
  322.      {1, 2, 3},
  323.      {2, 2, 1}}, 7, 8, 75},
  324. /*
  325.    pattern 20:    2       solidify eye on center
  326.            202
  327.         230
  328.          0
  329. */
  330.    {{{0, 0, 2},
  331.     {-1, 1, 2},
  332.      {0, 1, EMPTY},
  333.      {1, 1, 2},
  334.      {0, 2, 2},
  335.      {1, 2, 3},
  336.      {2, 2, EMPTY},
  337.      {1, 3, EMPTY}}, 8, 8, 75},
  338. /*
  339.    pattern 21:    2      solidify eye on center
  340.            202
  341.         230
  342.          1
  343. */
  344.    {{{0, 0, 2},
  345.     {-1, 1, 2},
  346.      {0, 1, EMPTY},
  347.      {1, 1, 2},
  348.      {0, 2, 2},
  349.      {1, 2, 3},
  350.      {2, 2, EMPTY},
  351.      {1, 3, 1}}, 8, 8, 75},
  352. /*
  353.    pattern 23: 20100     connect if invaded
  354.            00302
  355. */
  356.    {{{0, 0, 2},
  357.      {0, 1, EMPTY},
  358.      {1, 0, EMPTY},
  359.      {1, 1, EMPTY},
  360.      {2, 0, 1},
  361.      {2, 1, 3},
  362.      {3, 0, EMPTY},
  363.      {3, 1, EMPTY},
  364.      {4, 0, EMPTY},
  365.      {4, 1, 2}}, 10, 8, 84},
  366. /*
  367.    pattern 24: 2100    connect if invaded
  368.            0302
  369. */
  370.    {{{0, 0, 2},
  371.      {0, 1, EMPTY},
  372.      {1, 0, 1},
  373.      {1, 1, 3},
  374.      {2, 0, EMPTY},
  375.      {2, 1, EMPTY},
  376.      {3, 0, EMPTY},
  377.      {3, 1, 2}}, 10, 8, 83}
  378.   };
  379. /* end patterns */
  380.